package com.thirteen.app.daoTest;

import com.thirteen.app.dto.ExamRecordResponse.UnJudgedDto;
import com.thirteen.app.dto.JudgeSubjectiveResquest.JudgeByPersonDto;
import com.thirteen.app.entity.ExamRecord;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ExamRecordDao {

    //    插入一条记录
    Integer insertRecord(@Param("examId") Integer examId, @Param("userId") Integer userId, @Param("paperId") Integer paperId, @Param("tryCount") Integer tryCount);

    //    查看当前考试状态
    Integer queryState(@Param("examId") Integer examId, @Param("userId") Integer userId);

    //    获取当前用户开启的考试数量
    Integer queryCurrentExamNum(@Param("userId") Integer userId);

    //    当前尝试次数
    Integer queryTryCount(@Param("examId") Integer examId, @Param("userId") Integer userId);

    //    获取examRecordId
    Integer queryExamRecordId(@Param("examId") Integer examId, @Param("userId") Integer userId);

    //    提交试卷
    Boolean updateExamRecord(@Param("examRecordId") Integer examRecordId);

    //    查找考试记录
    ExamRecord queryExamRecord(@Param("examRecordId") Integer examRecordId);

    //    判断是否第一次参加
    Integer isFirstAttend(@Param("examId") Integer examId, @Param("userId") Integer userId);

    //    阅卷结束，更新成绩
    void updateScore(@Param("judgeByPersonDto") JudgeByPersonDto judgeByPersonDto);

    //    查出某场考试的考试人数
    Integer queryExamUserCount(@Param("examId") Integer examId);

    //wc
    //查询没有批阅的考试记录及该记录对应的学生学号和姓名
    List<UnJudgedDto> queryAllUnJudgeByExamId(Integer examId);

    //重新获取随机组卷的试卷时，查询该随机试卷的客观题Id
    List<Integer> getQuestionIdFromObjective(Integer examRecordId);

    //重新获取随机组卷的试卷时，查询该随机试卷的主观题Id
    List<Integer> getQuestionIdFromSubjective(Integer examRecordId);

    //更新考试记录的状态为1
    int updateExamStateById(Integer examRecordId);


}
